package com.example.study2.ThisReference;

/**
 * this引用示例
 * this引用指向当前对象(成员方法运行时调用该成员方法的对象)，在成员方法中所有成员变量的操作，都是通过该引用去访问。
 * 它能在类的实例方法、构造方法或实例初始化块中使用（非static方法），用于指向当前正在操作的对象。
 */
public class Date2 {
    // 成员变量
    public int year;
    public int month;
    public int day;

    /**
     * 设置日期的方法 - 使用this区分成员变量和参数
     * @param year 年份
     * @param month 月份
     * @param day 日期
     */
    public void setDay(int year, int month, int day) {
        this.year = year;   // 使用this.year表示成员变量，year表示参数
        this.month = month; // 使用this.month表示成员变量，month表示参数
        this.day = day;     // 使用this.day表示成员变量，day表示参数
    }

    /**
     * 打印日期的方法
     */
    public void printDate() {
        // 在方法中访问成员变量时，实际上都隐含了this引用
        System.out.println(this.year + "/" + this.month + "/" + this.day);
    }

    public static void main(String[] args) {
        // 创建Date对象
        Date2 d = new Date2();
        // 调用setDay方法设置日期
        d.setDay(2020, 9, 15);
        // 调用printDate方法打印日期
        d.printDate();  // 输出：2020/9/15
    }
}
